u`
Ep.229ibaseL[[hj

AWKFp.228 inheritance03.cs

E{NX̗oprotectedɂĂAỎB؂N邱(ʂɂȂ邱)mF悤

쐬

//AWKFp.228 inheritance03.cs
using System;
class Base { //{NX
    protected int x = 10; //Jp\ȃf[^o
    protected void BaseMethod() { //Jp\ȃ\bh
        Console.WriteLine("BaseNXł");
    }
}
class Derived : Base { //hNX
    new public int x = 20; //f[^o̖ỎB؂
    new public void BaseMethod() { //\bh̖ỎB؂
        Console.WriteLine("DerivedNXł");
    }
}
class inheritance03 {
    public static void Main() {
        Derived d = new Derived(); //hNX̃CX^X𐶐
        Console.WriteLine("x = {0}", d.x); //B؂f[^op
        d.BaseMethod(); //B؂\bhs
    }
}

p.229ibaseL[[hj

EỎB؂͊{NXƓӖ̃oɓO邱ƂŁAÕo̗hƂł
EƂ͂u㏑vł͂ȂuB؂vȂ̂ŁAΏۂƂȂĂ{NX̃oubase.vOu邱ƂŌĂяo\

p.229 inheritance04.cs

//p.229 inheritance04.cs
using System;
class Base { //{NX
    protected int x = 10; //Jp\ȃf[^o
}
class Derived : Base { //hNX
    //Ɂuprotected int x = 10;vpĂ邪ɉB؂
    new int x = 20; //ỎB؂sf[^o
    public void Show() {
        Console.WriteLine("base.x = {0}, x = {1} ", base.x, x); //B؂ꂽxƉB؂x\
    }
}
class inheritance04 {
    public static void Main() {
        Derived d = new Derived();
        d.Show();
    }
}

p.230 \bh̃I[o[Ch

E\bhɂ閼ỎB؂̏ʃo[WłAq̑Ԑ
EāA\bhɂĂ͖ỎB؂ł͂ȂAI[o[Chp邱Ƃ
EỎB؂Ƃ͈قȂA{NX̋KvłAI[o[Ch\Ƃ郁\bh͉z\bhɂ邱
EF public/protected virtual ߂l^ \bh(Xg){e}
EhNXŃI[o[Chs\bh̓I[oCh\bhɂ邱
EF ANZXCq override ߂l^ \bh(Xg){e}
EȂAVOj`ƃANZXCq͉z\bhɍ킹邱
EÓI\bh͖ỎB؂͉\AI[o[Ch͕s

p.231 override01.cs

//p.231 override01.cs
using System;
class MyBase { //{NX
    public virtual void Method() { //I[o[Ch\Ƃ鉼z\bh
        Console.WriteLine("MyBase");
    }
}
class Derived1 : MyBase { //hNX@
    public override void Method() { //I[o[Ch\bh@
        Console.WriteLine("Derived1");
    }
}
class Derived2 : MyBase { //hNXA
    public override void Method() { //I[o[Ch\bhA
        Console.WriteLine("Derived2");
    }
}
class override01 {
    public static void Main(){
        Derived1 d1 = new Derived1();
        Derived2 d2 = new Derived2();
        d1.Method(); //I[o[Ch\bh@
        d2.Method(); //I[o[Ch\bhA
    }
}

p.232iԐ̑OɁApƎQƕϐj

EhNX̃CX^X͊{NX̎QƕϐňƂł
ÉuzC~XC̃zC~́AXCƂĈvƂƓB
F 
@class Slime {} 
@class HoimiSlime : Slime {} 
@HoimiSlime hoimin = new HoimiSlime(); //zC~XC̃zC~
@Slime shoimin = hoimin; //XCSzC~ƂĈ
ÊƂ𗘗pƁA̔hNX̃IuWFNg{NX̃IuWFNgƈꏏɂāA{NX^ƂĂ܂Ƃ߂Ĉ
F Slime[] slimes = {suralin, hoimin, behoimin}; //suralinSlime^AbehoiminHoimiSlimepBehoimiSlime^Ƃ

p.232 Ԑ

EhNX̃CX^X{NX̎QƕϐňƁAỎB؂̏ꍇ́A{NX̃IuWFNgƂĈ
EāAhNXœƎɒ`o͗płȂ
Eɑ΂āA{NX̎QƕϐňĂAhNX̒`p̂Ԑ
EI[o[Ch\bhɂĂ͑ԐAhNX̃CX^X{NX̎QƕϐňĂAI[o[Ch\bh΁Aꂪp
EɂAhNX̃CX^X{NX̎Qƕϐňꍇ̃fbgł
EɂAۂɎs郁\bh̓éAsɌ܂邱ƂɂȂiI\bhfBXpb`Ƃj

p.223 override02.cs

//p.223 override02.cs
using System;
class Mammal { //MރNX
    protected const int LegNo = 4; //JŌp\Ȓ萔ur̐v
    protected string Koe; //JŌp\ȕϐuv
    public virtual string Nakigoe() { //I[oCh\ȉz\bh
        Koe = "...";
        return Koe; //Ԃ
    }
    public int Leg() { //JŌp\Ȓʏ탁\bh
        return LegNo;
    }
}
class Cat : Mammal { //hNXuLv
    //Ɂuprotected const int LegNo = 4;vƂ݂Ȃ
    //Ɂuprotected const string Koe;vƂ݂Ȃ
    //Ɂupublic int Leg()vƂ݂Ȃ
    public override string Nakigoe() { //z\bhI[oCh
        Koe = "j[Aj[";
        return Koe; //L̐Ԃ
    }
}
class Dog : Mammal { //hNXuv
    //Ɂuprotected const int LegNo = 4;vƂ݂Ȃ
    //Ɂuprotected const string Koe;vƂ݂Ȃ
    //Ɂupublic int Leg()vƂ݂Ȃ
    public override string Nakigoe() { //z\bhI[oCh
        Koe = "A";
        return Koe; //̐Ԃ
    }
}
class override02 {
    public static void Main() {
        Mammal m;
        Cat cat = new Cat();
        Dog dog = new Dog();
        m = cat; //hNX̎Qƕϐ{NX̎Qƕϐɑ邱Ƃň
        Console.WriteLine("L̋r{0}{Ŗ́u{1}vł", 
            m.Leg(), m.Nakigoe()); //ԐL̐Ԃ
        m = dog;
        Console.WriteLine("̋r{0}{Ŗ́u{1}vł",
            m.Leg(), m.Nakigoe()); //Ԑꌢ̐Ԃ
    }
}

p.235 vpeB̃I[o[Ch

EvpeB(p.207)̓\bhƓlɃI[oCh\
E{NX̃vpeB͉zvpeBɁAhNX̃vpeB̓I[o[ChvpeBɂ
EF public/protected virtual ߂l^ vpeB {e}
EF ANZXCq override ߂l^ vpeB {e}

p.236 override03.cs

//p.236 override03.cs
using System;
class Mammal { //MރNX
    protected const int LegNo = 4; //JŌp\Ȓ萔ur̐v
    public virtual string Nakigoe { //zvpeB
        get { return "..."; } //get̂
    }
    public int Leg() { //JŌp\Ȓʏ탁\bh
        return LegNo;
    }
}
class Cat : Mammal { //hNXuLv
    public override string Nakigoe { //I[oChvpeB
        get { return "j[Aj["; } //get̂
    }
}
class Dog : Mammal { //hNXuv
    public override string Nakigoe { //I[oChvpeB
        get { return "A"; } //get̂
    }
}
class override03 {
    public static void Main() {
        Mammal m;
        Cat cat = new Cat();
        Dog dog = new Dog();
        m = cat; //hNX̎Qƕϐ{NX̎Qƕϐɑ邱Ƃň
        Console.WriteLine("L̋r̐{0}{ŁA́u{1}vł",
            m.Leg(), m.Nakigoe); //ԐL̐Ԃ
        m = dog;
        Console.WriteLine("̋r̐{0}{ŁA́u{1}vł",
            m.Leg(), m.Nakigoe); //Ԑꌢ̐Ԃ
    }
}

p.237 CfNT̃I[o[Ch

E\bhƓl
E{NX̃CfNT͉zCfNTɁAhNX̃CfNT̓I[o[ChCfNTɂ
EF public/protected virtual ߂l^ this[CfbNX^ CfNX] {e}
EF ANZXCq  override ߂l^ this[CfbNX^ CfNX] {e}

쐬

//p.237 override04.cs
using System;
class Mammal { //MރNX
    protected const int LegNo = 4; //JŌp\Ȓ萔ur̐v
    protected string Tail, Gei, Food, Koe;  //JŌp\ȕϐQ
    public virtual string this[string index] { //zCfNT
        get { return "...";  } //get̂
    }
    public int Leg() { //JŌp\Ȓʏ탁\bh
        return LegNo;
    }
}
class Cat : Mammal { //hNXuLv
    //Ɂuprotected const int LegNo = 4;vƌȂ
    //Ɂuprotected string Tail, Gei, Food, Koe;vƌȂ
    //Ɂupublic int Leg()vƌȂ
    public override string this[string index] { //I[o[ChCfNT(CfbNX͕)
        get {
            switch (index) {
                case "": Tail = "1{"; return Tail;
                case "|": Gei = "łȂ"; return Gei;
                case "": Koe = "j[Aj["; return Koe;
                case "Hו": Food = "Lbgt[h"; return Food;
                default: return "";
            }
        }
    }
}
class Dog : Mammal { //hNXuv
    //Ɂuprotected const int LegNo = 4;vƌȂ
    //Ɂuprotected string Tail, Gei, Food, Koe;vƌȂ
    //Ɂupublic int Leg()vƌȂ
    public override string this[string index] { //I[o[ChCfNT(CfbNX͕)
        get {
            switch (index) {
                case "": Tail = "1{";  return Tail;
                case "|": Gei = "ł"; return Gei;
                case "": Koe = "A"; return Koe;
                case "Hו": Food = "hbOt[h"; return Food;
                default: return "";
            }
        }
    }
}
class override04 {
    public static void Main() {
        Mammal m;
        Cat cat = new Cat();
        Dog dog = new Dog();
        m = cat; //hNX̎Qƕϐ{NX̎Qƕϐɑ邱Ƃň
        Console.WriteLine("L̋r{0}{łB{1}łB|{2}BHו{3}B",
            m.Leg(), m[""], m["|"], m["Hו"]); //CfbNXƂăI[o[ChCfNTĂ
        m = dog;
        Console.WriteLine("̋r{0}{łB{1}łB|{2}BHו{3}B",
            m.Leg(), m[""], m["|"], m["Hו"]); //CfbNXƂăI[o[ChCfNTĂ
    }
}

p.240 NX̑w\

EhNX{NXƂĂɔh邱Ƃ\
Eh̔hNXɂ́A{NX̃oɉĔhNXƎɒ`op
Eh̔hNXŔhNX̓Ǝ\bhI[oChłȀꍇAhNX̃\bh͉z\bhɂ邱
Eh̔hNXŔhNX̃I[o[Ch\bhI[oChꍇAhNX̃\bh̓I[o[Ch\b̂܂܂ŗǂ

p.240 inheritance05.cs

//p.240 inheritance05.cs
using System;
class MyBase { //{NX
    protected int x = 10; //Jp\ȃf[^o
    public virtual void show() { //z\bh
        Console.WriteLine("x = {0}", x);
    }
}
class Derived1 : MyBase { //hNX
    //Ɂuprotected int x = 10;vƌȂ
    protected int y = 20;
    //Ɂupublic virtual void show()vƌȂ@I[o[Ch
}
class Derived2 : Derived1 { //h̔hNX
    //Ɂuprotected int x = 10;vƌȂ
    //Ɂuprotected int y = 20;vƌȂ
    int z = 30;
    public override void show() { //hNXp\bhI[o[ChA
        Console.WriteLine("z = {0}", z);
    }
}
class inheritance05 {
    public static void Main() {
        MyBase mb;
        Derived1 d1 = new Derived1();
        Derived2 d2 = new Derived2();
        mb = d1; //hNX̎Qƕϐ{NX̎Qƕϐɑ邱Ƃň
        mb.show(); //Ԑɂ@s
        mb = d2; //hNX̎Qƕϐ{NX̎Qƕϐɑ邱Ƃň
        mb.show(); //ԐɂAs
    }
}

p.243 NX̌pƃRXgN^iȂ̏ꍇj

EǂȃNXłĂARXgN^͏ȗ\
Eȗƈ̂ȂĝȂRXgN^Iɗpӂ
E{NX̃IuWFNĝȂnewŐƁÄ̂ȂRXgN^Ă΂
EhNX̃IuWFNĝȂnewŐƁF
@@{NẌ̂ȂRXgN^Ă΂
@AhNẌ̂ȂRXgN^Ă΂
E邱ƂŁA{NXŒ`f[^ȍ{NXp̏ƂRXgN^ɏĂƂɂAhNX̃IuWFNgɎIɎs
EF
  class Slime { //{NX
@@public int hp;
    public Slime { hp = 10; } //RXgN^@
@}
  class HoimiSlime : Slime { //hNX
@@//Ɂupublic int hpvƂ݂Ȃ
@@public int mp;
    public HoimiSlime { mp = 20; } //RXgN^A
@}
@class Game {
@@public play() {
@@@HoimiSlime hoimin = new HoimiSlime(); //@A삵hpmp
@@@F

p.243 inheritance06.cs

//p.243 inheritance06.cs
using System;
class MyBase { //{NX
    protected int x; //JŌp\ȃf[^o
    public MyBase() { //RXgN^@
        Console.WriteLine("MyBase");
        x = 10;
    }
}
class Derived1 : MyBase { //hNX
    //Ɂuprotected int x;vƂ݂Ȃ
    public Derived1() { //RXgN^A
        Console.WriteLine("Derived1");
        x = 20;
    }
}
class Derived2 : Derived1 { //h̔hNX
    //Ɂuprotected int x;vƂ݂Ȃ
    public Derived2() { //RXgN^B
        Console.WriteLine("Derived2");
        x = 30;
    }
    public void show() {
        Console.WriteLine("x = {0}", x);
    }
}
class inheritance06 {
    public static void Main() {
        Derived2 d2 = new Derived2(); //RXgN^@AB̏ɓ삷
        d2.show(); //Bő30\
    }
}

p.245 NX̌pƃRXgN^ȉꍇj

Ep.243 inheritance06.cs̊{NX̃RXgN^@int^i^āAx̏lɗpƂƁAhNX̃RXgN^AG[ɂȂ
E͔hNXɂĊ{NX̃RXgN^ł^Kv邩
ÊbaseL[[hŁAhNX̃RXgN^AɊ{NXƓint^i^āu:base()vw肷Ɨǂ
EāAhNX̃RXgN^Aɂint^ix̏lɗpĂǂ
Eh̔hNXɂĂl
EĂяoł́AhNX̃RXgN^Aɂint^ix̏lɗp邩ǂɂ炸A^邱

AWKFp.243 inheritance06.cs

EL

쐬

//AWKFp.243 inheritance06.cs
using System;
class MyBase { //{NX
    protected int x; //JŌp\ȃf[^o
    public MyBase(int i) { //RXgN^@
        Console.WriteLine("MyBase");
        x = i;
    }
}
class Derived1 : MyBase { //hNX
    //Ɂuprotected int x;vƂ݂Ȃ
    public Derived1(int i) : base(i) { //RXgN^A
        Console.WriteLine("Derived1");
        x = i;
    }
}
class Derived2 : Derived1 { //h̔hNX
    //Ɂuprotected int x;vƂ݂Ȃ
    public Derived2(int i) : base(i){ //RXgN^B
        Console.WriteLine("Derived2");
        x = i;
    }
    public void show() {
        Console.WriteLine("x = {0}", x);
    }
}
class inheritance06 {
    public static void Main() {
        Derived2 d2 = new Derived2(30); //RXgN^@AB̏ɓ삷
        d2.show(); //Bő30\
    }
}

p.245 inheritance07.cs

//p.245 inheritance07.cs
using System;
class MyBase { //{NX
    protected double d; //JŌp\ȃf[^o
    public MyBase(double a, double b, double c) { //RXgN^@
        d = Math.Pow(b, 2.0) - 4.0 * a * c;
    }
}
class MyJudge : MyBase { //hNX
    //Ɂuprotected double d;vƂ݂Ȃ
    public bool bJudge;
    public MyJudge(double p, double q, double r) : base(p, q, r) { //MyBaseNX̃RXgN^Ɉn
        //Ŋ{NX̃RXgN^MyBase(p, q, r)sAd̒l܂
        Console.WriteLine("ʎ = {0}", d);
        if (d < 0.0) {
            bJudge = false;
        } else { 
            bJudge = true;
        }
    }
}
class inheritance07 {
    public static void Main() {
        MyJudge mj = new MyJudge(1.0, 2.0, 3.0); //
        Console.WriteLine(mj.bJudge);
        MyJudge mk = new MyJudge(1.0, 4.0, 0.0);
        Console.WriteLine(mk.bJudge);
    }
}

p.247iۃ\bhj

E{NXɂĔhNXŃI[o[Chė~\bh`ł
EF MonsterNXɁu\\bhv`
EƁA{NXł͋̓Iȓe߂KvȂȂ
Ȅꍇɗpd|ۃ\bhŁA̒`AhNXł͒ۃ\bh̃I[o[Ch`ɂȂ
EF public/protected abstract ߂l^ \bh(Xg); //g͋LqȂ
EɂAhNX𗘗p鑤A{NXɂ钊ۃ\bhI[o[ChĂ邱ƂO񂵂Ċpł̂bg
EȂAۃ\bh͐ÓI\bhɂ͂łȂ

p.247 ۃNX

Eۃ\bhPłNX͒ۃNXƂȂ̂ŁANX`̖`abstractOu邱
EF abstract class NX {c}
EF
@abstract class Monster { //ۃNX
@@protected int hp;
@@protected abstract void show(); //ۃ\bh
@}

p.248 abstract01.cs

//p.248 abstract01.cs
using System;
abstract class MyAb { //ۃNX
    public abstract double Hanbetsu(double a, double b, double c); //ۃ\bh
}
class MyHanbetsu : MyAb { //hNX
    public override double Hanbetsu(double a, double b, double c) { //ۃ\bhI[o[Ch
        return Math.Pow(b, 2.0) - 4.0 * a * c;
    }
}
class abstract01 {
    public static void Main() {
        MyHanbetsu h = new MyHanbetsu(); //hNX̃CX^X𐶐
        double d = h.Hanbetsu(1.0, 2.0, 3.0); //I[o[Ch\bhĂ
        Console.WriteLine(d);
    }
}

p.249isealedNXj

Ep͊{NX̑Sop̂ŁAgǔɂȂ\
EŁAphꍇ́AsealedL[[hOuΗǂ
EC#VXe񋟂ĂNX̒ɂsealedNX
EȂAsealedNX͒ۃNXɂłȂ̂ŁAۃ\bh͋LqłȂ

p.250 NX𕪊`

EpartialL[[hNX`ɑOu邱ƂŁANXt@C܂ċLqł
EɂAt@CȂČʂǂȂƋɁAlł̕S⋤LiO[vJj₷Ȃ
ESẴ\[XɂāApartialL[[hNX`Ƃ邱
ErhɎIɌ̂ŁAقȂ\[Xɂ郁opł
EVisual StudiȍꍇAPvWFNg̒ɕ̃\[Xt@CuΗǂ
Ep.250 partial01.cŝ悤1\[Xt@C̒ŃNX𕪊`邱Ƃ\A܂Ӗ͂Ȃ

p.250 partial01.cs

//p.250 partial01.cs
using System;
partial class MyClass { //MyClassNX̒`@
    public int x;
}
class partial01 { //partial01NX̒`
    public static void Main() {
        MyClass mc = new MyClass();
        mc.x = 10;
        mc.Show();
    }
}
partial class MyClass { //MyClassNX̒`A
    public void Show() {
        Console.WriteLine("x = {0}", x);
    }
}

AWKFp.250 partial01.cs

EMyClassNX̒`AAʃt@Cipartial02.csjƂă\[X悤

oFAWKFp.250 partial01.cs

Eʃt@Cipartial02.csjB

 p.251u\bh𕪊`v̓\bh̓e𕪊NXɂ܂ċLqł킯ł͂Ȃ̂ŁAIɕsvł邽ߊB

\Fp.255uC^[tFCXƂ́v

